//package cn.stylefeng.guns.schedule;
//
//import cn.hutool.core.date.DateUnit;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.date.SystemClock;
//import cn.hutool.core.thread.ThreadUtil;
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.http.Header;
//import cn.hutool.http.HttpUtil;
//import cn.stylefeng.guns.base.utils.DingUtil;
//import cn.stylefeng.guns.base.utils.StringUtil;
//import cn.stylefeng.guns.modular.common.service.CommonService;
//import cn.stylefeng.guns.wechat.WeChatMsgSend;
//import cn.stylefeng.guns.wechat.WeChatUrlData;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.google.common.collect.Maps;
//import com.google.common.collect.Sets;
//import lombok.SneakyThrows;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.compress.utils.Lists;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.CommandLineRunner;
//import org.springframework.stereotype.Component;
//
//import java.util.*;
//import java.util.concurrent.TimeUnit;
//
//import static cn.stylefeng.guns.base.consts.ConfigConstant.ACCEPT;
//import static cn.stylefeng.guns.base.consts.ConfigConstant.AGENT;
//
////@Component
//@Slf4j
//public class Ao82Schedule implements CommandLineRunner {
//    @Autowired
//    private CommonService commonService;
//
//    final static Integer ISSUE = 91570;
//    final static Date DATE_INIT = DateUtil.parseDate("2022-11-23");
//
//    static Map<String, Integer> CODE1 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE2 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE3 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE4 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE5 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE6 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE7 = Maps.newLinkedHashMap();
//    static Map<String, Integer> CODE8 = Maps.newLinkedHashMap();
//
//    static List<Map<String, Integer>> codeMaps = Arrays.asList(CODE1, CODE2, CODE3, CODE4, CODE5, CODE6, CODE7, CODE8);
//    static Set<Long> ISSUE_SET = Sets.newHashSet();
//
//    @Override
//    public void run(String... args) throws Exception {
//        new Thread(() -> {
//            JSONArray datas = getData();
//            initYiLouData(datas);
//            while (true) {
//                try {
//                    Long issueNow = getIssue();
//                    sleep(issueNow);
//                } catch (Exception e) {
//                    log.error(e.getMessage(), e);
//                }
//            }
//        }).start();
//    }
//
//    @SneakyThrows
//    public static void main(String[] args) {
//        Ao82Schedule schedule = new Ao82Schedule();
////        JSONArray datas = schedule.getData2("D:\\乱七八糟\\ao8.txt");
//        JSONArray datas = schedule.getData();
//        schedule.print();
////        while (true) {
////            Long issueNow = schedule.getIssue();
////            schedule.sleep(issueNow);
////        }
////
////        List<Ao81Model> parse = Ao81Util.parse();
////        schedule.
//    }
//
//    public void sleep(Long issue) {
//        List<String> nums = Arrays.asList("4", "9");
//        String mm = DateUtil.format(new Date(), "mm").substring(1);
//        if (nums.contains(mm)) {
//            ThreadUtil.sleep(5000);
////            JSONArray datas2 = getData2("D:\\乱七八糟\\ao82.txt");
//            JSONArray datas2 = getData();
//            List<Map<String, Integer>> codes = getYiLou(datas2);
//            judge(codes, issue, 1, max1);
////            judge(codes, issue, 2, max2);
////            judge(codes, issue, 3, max3);
//            Integer ss = Integer.valueOf(DateUtil.format(new Date(), "ss"));
//            StringBuffer sb = new StringBuffer();
//            sb.append(issue).append("\t\n");
//            for (int i = 0; i < codeMaps.size(); i++) {
//                sb.append(StringUtil.getMap4Num2(codeMaps.get(i), 1))
//                        .append("\t")
//                        .append(StringUtil.getMap4Num2(codeMaps.get(i), 2))
//                        .append("\t")
//                        .append(StringUtil.getMap4Num2(codeMaps.get(i), 3))
//                        .append("\r\n");
//                System.out.println(codeMaps.get(i));
//            }
//            print();
//            send(1000006, sb.toString());
//            ThreadUtil.sleep(60 - ss, TimeUnit.SECONDS);
//        } else {
//            ThreadUtil.sleep(60000);
//        }
//    }
//
//
//    public Long beginIssueOfToday() {
//        long day = DateUtil.between(DATE_INIT, new Date(), DateUnit.DAY, true);
//        return ISSUE + day * 288;
//    }
//
//    public Long getIssue() {
//        long issue = beginIssueOfToday();
//        long now = SystemClock.now();
//        long begin = DateUtil.beginOfDay(new Date()).getTime() + 220000;
//        long time = (now - begin) / 1000;
//        return (time - time % 300) / 300 + issue;
//    }
//
//    public JSONArray getData() {
//        String url2 = "https://api.apiose122.com/klsf/queryToDayNumberLawOfStatistics.do?lotCode=10011";
//        JSONObject res = JSONObject.parseObject(HttpUtil.createGet(url2)
//                .header(Header.USER_AGENT, AGENT)
//                .header(Header.ACCEPT, ACCEPT)
//                .execute().body());
//
//        JSONArray datas = res.getJSONObject("result").getJSONArray("data");
//        return datas;
//    }
//
//    public void initYiLouData(JSONArray datas) {
//        List<Map<String, Integer>> maps = getYiLou(datas);
//        for (int i = 0; i < maps.size(); i++) {
//            codeMaps.get(i).putAll(maps.get(i));
//            System.out.println(codeMaps.get(i));
//        }
//        print();
//    }
//
//    public void print() {
//        String content = getIssue() + "\n";
//        for (int i = 0; i < codeMaps.size(); i++) {
//            Map<String, Integer> map = codeMaps.get(i);
//            Iterator<String> iterator = map.keySet().iterator();
//            while (iterator.hasNext()) {
//                String key = iterator.next();
//                content += StrUtil.format("【{}:{}】", key, map.get(key));
//            }
////            content = content.substring(0, content.length() - 1);
//            content += "\n";
//            content += "\n";
//        }
//        DingUtil.send(content, "9");
//    }
//
//
//    public List<Map<String, Integer>> getYiLou(JSONArray datas) {
//        List<Map<String, Integer>> codeMaps = Lists.newArrayList();
//        for (int i = 0; i < 8; i++) {
//            Map<String, Integer> map = Maps.newLinkedHashMap();
//            codeMaps.add(map);
//        }
//
//        for (int i = 0; i < datas.size(); i++) {
//            JSONObject data = datas.getJSONObject(i);
//            JSONArray lists = data.getJSONArray("list");
//            String code = data.getString("code");
//            for (int j = 0; j < lists.size(); j++) {
//                JSONObject list = lists.getJSONObject(j);
//                Integer rank = Integer.valueOf(list.getInteger("rank"));
//                int missing = Math.abs(Integer.valueOf(list.getInteger("missing")));
//                codeMaps.get(rank - 1).put(code, missing);
//            }
//        }
//
//        for (int i = 0; i < codeMaps.size(); i++) {
//            Map<String, Integer> codeMap = codeMaps.get(i);
//            StringUtil.sortMap(codeMap);
//        }
//        return codeMaps;
//    }
//
//    static Map<Integer, Integer> max1 = Maps.newHashMap();
//    static Map<Integer, Integer> max2 = Maps.newHashMap();
//    static Map<Integer, Integer> max3 = Maps.newHashMap();
//
//    public void judge(List<Map<String, Integer>> codes, Long issue, int weizhi, Map<Integer, Integer> max) {
//        log.info("issue:{},max1:{}", issue, max1);
////        log.info("issue:{},max2:{}", issue, max2);
////        log.info("issue:{},max3:{}", issue, max3);
//
//        StringBuffer sb1 = new StringBuffer("\r\n");
//        StringBuffer sb2 = new StringBuffer("\r\n");
//        StringBuffer sb3 = new StringBuffer("\r\n");
//
//        for (int i = 0; i < codes.size(); i++) {
//            String old1 = StringUtil.getMap4Num(codeMaps.get(i), 1);
//            String now1 = StringUtil.getMap4Num(codes.get(i), 1);
//
//            String old2 = StringUtil.getMap4Num(codeMaps.get(i), 2);
//            String now2 = StringUtil.getMap4Num(codes.get(i), 2);
//
//            String old3 = StringUtil.getMap4Num(codeMaps.get(i), 3);
//            String now3 = StringUtil.getMap4Num(codes.get(i), 3);
//
//            String msg1 = StrUtil.format("issue:{},weizhi:{},最大,old:{},now:{}", issue, i + 1, old1, now1);
//            String msg2 = StrUtil.format("issue:{},weizhi:{},第二,old:{},now:{}", issue, i + 1, old2, now2);
//            String msg3 = StrUtil.format("issue:{},weizhi:{},第三,old:{},now:{}", issue, i + 1, old3, now3);
//            sb1.append(msg1).append("\r\n");
//            sb2.append(msg2).append("\r\n");
//            sb3.append(msg3).append("\r\n");
//
//            if (!Objects.equals(now1, old1)) {
//                log.info("{},位置:{},最大变化，旧:{},新:{}", issue, i + 1, old1, now1);
//                if (max1.get(i) != null) {
//                    String msg = StrUtil.format("{},位置:{},连续2次最大变化，旧:{},新:{}", issue, i + 1, old1, now1);
//                    log.info(msg);
//                    send(1000012, msg);
//                }
//                max1.put(i, i);
//            } else {
//                max1.remove(i);
//            }
//
////            if (Objects.equals(now1, old1) && !Objects.equals(now2, old2)) {
////                log.info("{},位置:{},第二大变化，旧:{},新:{}", issue, i + 1, old2, now2);
////                if (max2.get(i) != null) {
////                    String msg = StrUtil.format("{},位置:{},连续2次第二变化，旧:{},新:{}", issue, i + 1, old2, now2);
////                    log.info(msg);
////                    send(1000012, msg);
////                }
////                max2.put(i, i);
////            } else {
////                max2.remove(i);
////            }
////
////            if (Objects.equals(now1, old1) && Objects.equals(now2, old2) && !Objects.equals(now3, old3)) {
////                log.info("{},位置:{},第三大变化，旧:{},新:{}", issue, i + 1, old3, now3);
////                if (max3.get(i) != null) {
////                    String msg = StrUtil.format("{},位置:{},连续2次第三变化，旧:{},新:{}", issue, i + 1, old3, now3);
////                    log.info(msg);
////                    send(1000012, msg);
////                }
////                max3.put(i, i);
////            } else {
////                max3.remove(i);
////            }
//
//            codeMaps.set(i, codes.get(i));
//        }
//
//        log.info(sb1.toString());
////        log.info(sb2.toString());
////        log.info(sb3.toString());
//    }
//
//    @SneakyThrows
//    public void send(Integer appid, String warnMsg) {
//        WeChatMsgSend swx = new WeChatMsgSend();
//        String postdata = swx.createpostdata("13459446228", "text", appid, "content", warnMsg);
//        swx.post("utf-8", WeChatMsgSend.CONTENT_TYPE, (new WeChatUrlData()).getSendMessage_Url(), postdata, commonService.getWechatToken(appid));
//    }
//}
